package com.usian.order.service.impl;

import com.usian.order.fegin.UserFegin;
import com.usian.order.mapper.OrderMapper;
import com.usian.order.pojo.Order;
import com.usian.order.pojo.User;
import com.usian.order.service.OrderService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * @TODO:
 * @Author:baimu
 * @Date:2024 06 26 09 14
 **/
@Service
@Slf4j
public class OrderServiceImpl implements OrderService {

   @Autowired
   OrderMapper orderMapper;

    @Autowired
    RestTemplate restTemplate;

    @Autowired
    UserFegin userFegin;


    @Override
    /**
     * 根据订单ID查找订单。
     * 该方法首先通过订单ID查询订单信息，然后根据订单中的用户ID调用远程API获取用户信息，
     * 最后将用户信息设置到订单对象中，返回包含完整信息的订单对象。
     *
     * @param id 订单ID
     * @return 包含用户信息的订单对象
     */
    public Order findById(Integer id) {
        // 通过订单ID查询订单信息
        Order order = orderMapper.findById(id);
        log.info("查询订单信息：{},用户ID：{}",order.toString(),order.getUserId());
        log.info("查询订单信息,用户ID：{}",order.getUserId());
        // 构造查询用户信息的URL，基于订单中的用户ID
        //String url="http://localhost:8082/api/user/getUserById/"+order.getUserId();
        // 通过REST客户端获取用户信息
        //User user = restTemplate.getForObject(url, User.class);

        User user = userFegin.getUserById(order.getUserId());
        log.info("查询用户信息：{}",user.toString());

        // 将获取到的用户信息设置到订单对象中
        order.setUser(user);
        // 返回包含完整信息的订单对象
        return order;
    }

    @Override
    public List<Order> findAll() {
        List<Order> orderList = orderMapper.findAll();
        for (Order order : orderList) {
            User user = userFegin.getUserById(order.getUserId());
            order.setUser(user);
        }
        return orderList;
    }
}
